package stashpullrequestbuilder.stashpullrequestbuilder;
import hudson.EnvVars;
import hudson.Extension;
import hudson.model.*;
import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.*;
@Extension
public class StashAditionalParameterEnvironmentContributor extends EnvironmentContributor {
private static Set<String> params =
new HashSet<String>(Arrays.asList("sourceBranch",
"targetBranch",
"sourceRepositoryOwner",
"sourceRepositoryName",
"pullRequestId",
"destinationRepositoryOwner",
"destinationRepositoryName",
"pullRequestTitle",
"sourceCommitHash",
"destinationCommitHash"));
@Override
public void buildEnvironmentFor(@Nonnull Run r, @Nonnull EnvVars envs, @Nonnull TaskListener listener) throws IOException, InterruptedException {
StashCause cause = (StashCause) r.getCause(StashCause.class);
if (cause == null) {
return;
}
ParametersAction pa = r.getAction(ParametersAction.class);
for (String param : params) {
addParameter(param, pa, envs);
}
super.buildEnvironmentFor(r, envs, listener);
}
private static void addParameter(String key,
ParametersAction pa,
EnvVars envs) {
ParameterValue pv = pa.getParameter(key);
if (pv == null || !(pv instanceof StringParameterValue)) {
return;
}
StringParameterValue value = (StringParameterValue) pa.getParameter(key);
envs.put(key, getString(value.value, ""));
}
private static String getString(String actual,
String d) {
return actual == null ? d : actual;
}
}